Помогни ни да направим Uroci.net по - богат! Добави урок

C++ част.7 (Член функции на клас)

C++ » C++
fix3d   трудност:    видян: 43599


Глава 7: Член функции на клас

Съдържание на седма глава :

7.1. Инициализация на клас
7.2. Почленова инициализация
7.3. Презареждане на оператор
7.4. Пример за клас BitVector
7.5. Конвертори, дефинирани от потребителя



Тази глава разглежда следните три категории член функции, които подпомагат управлението на класовете:

1. Конструктори и деструктори за автоматична инициализация и деинициализация на обекти от класа.

2. Презаредими оператор функции, които могат да бъдат приложени към обекти на класа като се използува синтаксиса за запис на оператор по-скоро, отколкото имена на член функции. Например, вместо явното извикване на член функцията isEqual() на Screen:

if ( myScreen.isEqual(yourScreen) )

презаредимостта на операторите позволява на потребителите на класа Screen да напишат следното еквивалентно извикване:

if ( myScreen == yourScreen )

Освен това един клас може да се заеме и с управлението на собствената си памет като предложи свои членове представители на операторите new и delete.

3. Оператори за конвертиране, които да дефинират множество от разрешени преобразувания на типове за един клас. Тези преобразувания могат да бъдат прилагани неявно от компилатора по същия начин, по който се прилагат и стандартните преобразувания. Извикването на тези специални член функции в общия случай е прозрачно за потребителите на класа. Заедно тези функции правят синтаксиса и използуването на един клас толкова естествени за програмиста, колкото и вградените типове.



7.1. Инициализация на клас

Един обект клас се инициализира чрез инициализация на неговите член данни. Ако всички член данни на класа са публични, обектът може да бъде инициализиран като се използува списък от разделени със запетая стойности, затворен във фигурни скоби. Например,

class Word {public:
int occurs;
char *string;
};

// explicit member initialization Word
search = { 0, "rosebud" };

Най-общо казано, С++ поддържа механизъм за автоматична инициализация на обектите на всеки клас. Една специална член функция на класа, наречена конструкнор, се извиква неявно от компилатора винаги, когато се дефинира обект на класа или се отделя памет чрез оператора new. Конструкторът е създадена от потребителя функция, която носи името на класа си. Например, ето един конструктор за Word:

class Word {public:
Word( char*, int = 0 );
// constructor private:
int occurs;
char *string;
};

#include <string.h>
inline Word::Word( char *str, int cnt ) {
string = new char [ strlen(str) + 1 ];
strcpy( string, str );
occurs = cnt;
}

Конструкторът не трябва да определя тип за връщане или явно да връща стойност. Иначе, дефиницията на един конструктор е същата, както и дефиницията на обикновените член функции. В този случай, конструкторът за Word изисква един аргумент от тип char*. Може да бъде добавен и опционния втори аргумент от тип int. Следват няколко примера за това как един обект на Word може да бъде дефиниран при наличието на този конструктор.

#include "Word.h" // Word::Word( "rosebud", 0 )
Word search = Word("rosebud");
// Word::Word( "sleigh", 1 )
Word *ptrAns = new Word( "sleigh", 1 );

main() {
// shorthand constructor notations
// Word::Word( "CitizenKane", 0 )
Word film( "CitizenKane", 0 );
// Word::Word( "Orson Welles", 0 )
Word director = "Orson Welles";
}


Страници: 1 2 3 4 »

Сподели урока:



Регистрирайте се, за да добавите коментар


Калдейта Ком ЕООД - © 2003-. Всички права запазени.
Препоръчваме: IT Новини